This invention relates to estimating software systems development, that is to say how long it will take to realise (code/program) a design, in particular an object-oriented design.
Every commercial project needs a tool by which resources can be allocated effectively to produce the implementation of a design. This results in both lower risk and better utilization of assets. This can be achieved by expert opinion, where an expert in the domain, i.e. the programming language and design style can produce an opinion of the total time to completion. However, in new domains, where the design process/style and/or coding language have changed, a new metrics tool is required and preferably one which is not solely based on human guesswork, that is inheritance multiplied by some magic number means X days in total, and/or the number of lines of code or other dynamic implementation based attributes.
A known technique for obtaining a time estimate involves use of Function Point Analysis (FPA), which attempts to measure the software from the point of view of the software consumer rather than the software producer. Function point methodology is based on the amount of function delivered to the user rather than counting lines of code. Implementation is a two-stage process. First, data on existing projects is recorded in a database. Second, the project to be estimated is compared with the projects in the database using regression analysis or ranking to determine the man-hours estimate. Function point analysis uses statistical correlation to predict the amounts of effort required to build a system. The project""s key measures are evaluated with statistical correlation. First, the size of completed project is determined by counting up function points (each form, report and table is assigned a number based on how many fields are in that object). The hours spent building the project are added up, resulting in two numbers: function points and effort. Regression analysis determines the extent to which these numbers are correlated. If they are sufficiently related then one has an equation which converts function points to man hours.
Whilst this approach can produce reasonable results (time estimates), it is considered that some of the elements used are rather obscure, others relate to things that are indeterminate until you have commenced coding and in general that this FPA approach is not sufficiently related to particular projects, each of which is individual. Furthermore, every designer is individual and they work differently to one another.
According to one aspect of the present invention there is provided a method of estimating the time a particular designer or any one of a group of designers will take to realise a new design using an object-oriented methodology, including the step of determining for the particular designer or group of designers the appropriate version of a formula which links the time estimate and the numbers of predeterminated types of object-oriented elements present in a design, each element type having a respective multiplier for the particular designer or group of designers associated with it, wherein values for the respective multipliers are calculated from the numbers of the object-oriented elements of each type that the particular designer or group of designers employed in a plurality of previous designs and the actual realisation times for those designs, and including the steps of inserting the numbers of each of the types of the object-oriented elements present in the new design in the appropriate version of the formula and evaluating the formula, thereby obtaining the time estimate.
According to another aspect of the present invention there is provided a method of estimating the time a particular designer or any one of a group of designers will take to realise a new design using an object-oriented methodology, including the steps of
(a) for each of a plurality of previous designs produced by said designer or any one of the group of designers, storing data regarding the number of object-oriented elements of predetermined types employed and the actual time taken in a database;
(b) applying the numbers data for a first previous design to a formula which links the time estimate and the numbers of the predetermined types of object-oriented elements, each element type having a respective multiplier for the said designer or group of designers associated with it, selecting initial random values for the multipliers and performing multiple iterations, whilst adjusting the values of the multipliers, until a best-fit between a respective estimated time and the actual time taken for the first previous design is achieved;
(c) applying the numbers data from a second previous design and the values of the multipliers obtained in step (b) and corresponding to the best fit to the formula, performing multiple iterations, whilst adjusting the values of the multipliers, until a best fit between the respective estimated time and the actual time taken for the second previous design is achieved;
(d) calculating the average values of the multipliers from the values obtained in steps (b) and (c);
(e) applying the numbers data from a third previous design and the average values obtained in step (d) to the formula, performing multiple iterations, whilst adjusting the values of the multipliers, until a best fit between a respective estimated time and the actual time for the third previous design is achieved;
(f) repeating steps (d) and (e) until the data from all of the plurality of past designs have been employed, and repeating step (d) for last two previous designs of the plurality;
(g) analyzing a new object-oriented design, for which a time estimate is required, to determine the numbers data therefor, and
(h) applying the numbers data for the new design, together with the average values for the multipliers determined for the last two previous designs of the plurality in step (f), to the formula, and evaluating the formula to provide the time estimate for the new design.
According to a further aspect of the present invention there is provided a data carrier incorporating a computer program for performing a method of estimating the time a particular designer or any one of a group of designers will take to realise a new design using an objected-oriented methodology, the method including the step of determining for the particular designer or group of designers the appropriate version of a formula which links the time estimate and the numbers of predeterminated types of object-oriented elements present in a design, each element type having a respective multiplier for the particular designer or group of designers associated with it, wherein values for the respective multipliers are calculated from the numbers of the object-oriented elements of each type that the particular designer or group of designers employed in a plurality of previous designs and the actual realisation times for those designs, and including the steps of inserting the numbers of each of the types of the object-oriented elements present in the new design in the appropriate version of the formula and evaluating the formula, thereby obtaining the time estimate.
According to yet another aspect of the present invention there is provided a data carrier incorporating a computer program for performing a method of estimating the time a particular designer or any one of a group of designers will take to realise a new design using an objected-oriented methodology, the method including the steps of
(a) for each of a plurality of previous designs produced by said designer or any one of the group of designers, storing data regarding the number of object-oriented elements of predetermined types employed and the actual time taken in a database;
(b) applying the numbers data for a first previous design to a formula which links the time estimate and the numbers of the predetermined types of object-oriented elements, each element type having a respective multiplier for the said designer or group of designers associated with it, selecting initial random values for the multipliers and performing multiple iterations, whilst adjusting the values of the multipliers, until a best-fit between a respective estimated time and the actual time taken for the first previous design is achieved;
(c) applying the numbers data from a second previous design and the values of the multipliers obtained in step (b) and corresponding to the best fit to the formula, performing multiple iterations, whilst adjusting the values of the multipliers, until a best fit between the respective estimated time and the actual time taken for the second previous design is achieved;
(d) calculating the average values of the multipliers from the values obtained in steps (b) and (c);
(e) applying the numbers data from a third previous design and the average values obtained in step (d) to the formula, performing multiple iterations, whilst adjusting the values of the multipliers, until a best fit between a respective estimated time and the actual time for the third previous design is achieved;
(f) repeating steps (d) and (e) until the data from all of the plurality of past designs have been employed, and repeating step (d) for last two previous designs of the plurality;
(g) analyzing a new object-oriented design, for which a time estimate is required, to determine the numbers data therefor, and
(h) applying the numbers data for the new design, together with the average values for the multipliers determined for the last two previous designs of the plurality in step (f), to the formula, and evaluating the formula to provide the time estimate for the new design.